package com.example.yin.config;

import com.example.yin.constant.Constants;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 *这个配置类是非常典型的Spring Boot静态资源配置方式，
 * 它使得前端可以通过统一的URL模式访问后端存储的各种媒体资源，同时保持了实际存储位置的灵活性。
 **/
@Configuration //静态资源映射配置，作用是将 URL 路径 和 本地文件路径 关联起来：
public class WebPicConfig implements WebMvcConfigurer {

    //TODO 这个配置类的目的 资源处理器  看到对应的资源 会将其修改成相应的地址 资源处理器的优先级高于拦截器
   //当请求匹配到配置的URL模式时，Spring会从对应的本地路径提供静态资源
  /*  使Spring Boot能够提供存储在非classpath目录下的静态文件
    默认情况下Spring Boot只提供 static、public 等目录下的资源*/
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/img/avatorImages/**")
                .addResourceLocations(Constants.AVATOR_IMAGES_PATH);
        registry.addResourceHandler("/img/singerPic/**")
                .addResourceLocations(Constants.SINGER_PIC_PATH);
        registry.addResourceHandler("/img/songPic/**")
                .addResourceLocations(Constants.SONG_PIC_PATH);
        registry.addResourceHandler("/song/**")
                .addResourceLocations(Constants.SONG_PATH);
        registry.addResourceHandler("/img/songListPic/**")
                .addResourceLocations(Constants.SONGLIST_PIC_PATH);
        registry.addResourceHandler("/img/swiper/**")
                .addResourceLocations(Constants.BANNER_PIC_PATH);
    }
}
